package com.itheima.youdianda.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.itheima.youdianda.dto.ChildrenDto;
import com.itheima.youdianda.dto.ConfigDto;
import com.itheima.youdianda.dto.ListDto;
import com.itheima.youdianda.entity.SysConfig;
import com.itheima.youdianda.mapper.SysConfigMapper;
import com.itheima.youdianda.service.SysConfigService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 服务实现类
 * </p>
 *
 * @author author
 * @since 2022-05-22
 */
@Service
public class SysConfigServiceImpl extends ServiceImpl<SysConfigMapper, SysConfig> implements SysConfigService {

    @Override
    public ConfigDto getConfig() {
        ConfigDto configDto = new ConfigDto();
        List<SysConfig> list1 = this.list();
        configDto.setAllData(list1);
        List<ListDto> listDtos = new ArrayList<>();
        ListDto listDto1 = new ListDto();
        listDto1.setKey("base");
        listDto1.setName("基础配置");
        ListDto listDto2 = new ListDto();
        listDto2.setKey("system");
        listDto2.setName("系统设置");
        ListDto listDto3 = new ListDto();
        listDto3.setKey("custom");
        listDto3.setName("其他设置");
        listDtos.add(listDto1);
        listDtos.add(listDto2);
        listDtos.add(listDto3);
        int size = listDtos.size();
        for (int i = 0; i < size; i++) {
            // 创建空的childrenDto集合
            List<ChildrenDto> childrenDtoList = new ArrayList<>();
            LambdaQueryWrapper<SysConfig> wrapper = new LambdaQueryWrapper<>();
            // 筛选出指定tab_value字段下的集合 (将每种key_value的再次进行分组)
            wrapper.groupBy(SysConfig::getTab_value, SysConfig::getGroup_value);
            wrapper.eq(SysConfig::getTab_value, listDtos.get(i).getKey());
            List<SysConfig> list = this.list(wrapper);
            for (int j = 0; j < list.size(); j++) {
                // 创建空的childrenDto对象
                ChildrenDto childrenDto = new ChildrenDto();
                LambdaQueryWrapper<SysConfig> queryWrapper = new LambdaQueryWrapper<>();
                // 其他 底部 站点
                queryWrapper.eq(SysConfig::getGroup_value, list.get(j).getGroup_value());
                // 获取对应的data值
                List<SysConfig> dataList = this.list(queryWrapper);
                childrenDto.setData(dataList);
                childrenDto.setName(list.get(j).getGroup_value());
                childrenDtoList.add(childrenDto);
                listDtos.get(i).setChildren(childrenDtoList);
            }
            listDtos.add(listDtos.get(i));
//            listDtos.remove(0);
        }
        int size1 = listDtos.size()/2;
        for (int i = 0; i < size1; i++) {
            listDtos.remove(0);
        }
        configDto.setList(listDtos);
        return configDto;
    }
}
